//
//  WBUserAccount.swift
//  仿新浪微博
//
//  Created by 罗超 on 2017/9/1.
//  Copyright © 2017年 LuoChao. All rights reserved.
//

import UIKit

fileprivate let accountFile:NSString = "useraccount.json"

class WBUserAccount: NSObject {
    /// 访问令牌
    var access_token: String?
    /// 用户代号
    var uid: String?
    /// token过期日期
    var expires_in: TimeInterval = 0 {
        didSet {
            expiresDate = Date(timeIntervalSinceNow: expires_in)
        }
    }
    /// 过期日期
    var expiresDate: Date?
    
    override var description: String {
        return yy_modelDescription()
    }
    
    override init() {
        super.init()
        // 从磁盘加载保存的文件->字典
        do {
            let path = accountFile.cz_appendDocumentDir()
            let data = try Data(contentsOf: URL(fileURLWithPath: path!))
            // 使用字典设置属性值
            let dict = try? JSONSerialization.jsonObject(with: data, options: [])
            yy_modelSet(withJSON: dict ?? [:])
        } catch  {
            print("读取文件失败 - \(error)")
        }
    }
    
    /**
     数据存储
     1. 偏好设置（小）
     2. 沙盒-归档/plist/json
     3. 数据库（FMDB/CoreData）
     4. 钥匙串访问（小/自动加密 - 需要使用框架 SSKeyChain）
    */
    func saveAccount() {
        // 1. 模型转字典
        var dict = (yy_modelToJSONObject() as? [String: AnyObject]) ?? [:]
        
        dict.removeValue(forKey: "expires_in")
        
        do {
            // 2. 字典序列化 data
            let data = try? JSONSerialization.data(withJSONObject: dict, options: [])
            let filePathStr = accountFile.cz_appendDocumentDir()
            // 3. 写入磁盘
            let filePath = URL(fileURLWithPath: filePathStr!)
            try data?.write(to: filePath)
        } catch {
            print("保存失败 - \(error)")
        }
    }
}
